# -*- coding: utf-8 -*-

 ###############################################
 ##                                             ##
 ##   Tips                                       ##
 ##                                              ##
 ##                                              ##
 ##                                              ##
 ##   por Críptidos Digitales                    ##
 ##   GPL (c)2005                                ##
  ##                                             ##
    ###############################################

"""
Contiene una clase que define la ventana de diálogo que muestra los tips del
sistema.
"""

import sys
from PyQt4 import QtCore, QtGui

import tips_ui
import errors

import man


class Forma(QtGui.QDialog):

    """ Contiene la gui y funcionalidad del diálogo de tips de la aplicación"""

    @property
    def app(self):
        return self.__app

    @property
    def currentIndex(self):
        return self.__currentIndex

    def __init__(self,  *args,  **kwds):
        if kwds.has_key('app'):
            self.__app = kwds.pop('app')
        else:
            self.__app = None

        QtGui.QDialog.__init__(self,  *args)

        self.ui = tips_ui.Ui_Dialog()
        self.ui.setupUi(self)

        self.setWindowTitle(u"%s - Tips" % self.app.info['title'])
        self.setWindowIcon(QtGui.QIcon("./imagenes/EB.png"))

        icon = QtGui.QIcon()
        icon.addPixmap(QtGui.QPixmap("imagenes/icono.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
        self.setWindowIcon(icon)

        if man.atributoI(grupo=u'sistema', nombre=u'mostrarTips').valor==u"1":
            self.ui.chMostrarTips.setChecked(True)
        else:
            self.ui.chMostrarTips.setChecked(False)
        self.connect(self.ui.chMostrarTips, QtCore.SIGNAL('stateChanged(int)'), self.toggleMostrarTips)

        self.connect(self.ui.boSiguiente, QtCore.SIGNAL('clicked()'), self.siguiente)
        self.connect(self.ui.boAnterior, QtCore.SIGNAL('clicked()'), self.anterior)
        self.connect(self.ui.boCerrar, QtCore.SIGNAL('clicked()'), self.salir)

        if self.app.config.pull('layout', 'tipsWindowState'):
            self.restoreGeometry(QtCore.QByteArray().fromBase64(self.app.config.pull('layout', 'tipsWindowState')))
        else:
            geometry = self.app.screenGeometry
            self.setGeometry(geometry.width() * .3, geometry.height() * .3, geometry.width() * .40, geometry.height() * .40)

        self.ui.stack.removeWidget(self.ui.stack.widget(0))

        font = QtGui.QFont()
        font.setFamily("Microsoft Sans Serif")
        font.setPointSize(9*self.app.fontZoom)
        font.setWeight(75)
        font.setBold(True)

        font2 = QtGui.QFont()
        font2.setFamily("Microsoft Sans Serif")
        font2.setPointSize(8*self.app.fontZoom)
        font2.setWeight(75)
        font2.setBold(True)

        textEdit = QtGui.QTextEdit()
        textEdit.setReadOnly(True)
        textEdit.setHtml(QtGui.QApplication.translate("Dialog", "AL EJECUTAR EL SISTEMA POR PRIMERA VEZ.<br><br>Inicie capturando los datos de los Proveedores.<br><br>Capture despues los datos de los productos (Vea la información para captura de Productos).<br><br>"
"Después podrá capturar Ordenes de compra y Compras, esto cargará existencias en el sistema.<br><br>"
"Ahora podrá capturar ventas, los datos de cliente se pueden capturar en ese momento, o si los tiene archivados los puede capturar antes en el sistema.", None, QtGui.QApplication.UnicodeUTF8))


        self.ui.stack.addWidget(textEdit)

        # self.te1.setObjectName("te1")
        # self.verticalLayout_4.addWidget(self.te1)


        label = QtGui.QLabel(QtGui.QApplication.translate("Dialog", "AL EJECUTAR EL SISTEMA POR PRIMERA VEZ.\n\nInicie capturando los datos de los Proveedores .\n\n"
"Capture despues los datos de los productos (Vea la información para captura de Productos).\n"
"\n"
"Después podrá capturar Ordenes de compra y Compras, esto cargará existencias en el sistema.\n"
"\n"
"Ahora podrá capturar ventas, los datos de cliente se pueden capturar en ese momento, o si los tiene archivados los puede capturar antes en el sistema.", None, QtGui.QApplication.UnicodeUTF8))
        label.setStyleSheet("background-color:#FFFFFF;")
        label.setAlignment(QtCore.Qt.AlignLeading|QtCore.Qt.AlignLeft|QtCore.Qt.AlignTop)
        label.setWordWrap(True)
        label.setMargin(6)
        label.setFont(font)
        # self.ui.stack.addWidget(label)

        label = QtGui.QLabel(QtGui.QApplication.translate("Dialog", """CAPTURA DE PRODUCTOS\n\nEl código y nombre de producto que se captura son de uso interno.\n\nSi también desea usar el código y nombre de producto que usa el proveedor para las órdenes de compra y compras, puede capturar esos datos marcando el cuadrito que dice "Habilitar" en el recuadro que dice "Datos segun proveedor" en la ventana de captura de productos.\n\nCada producto tendrá los datos internos y podrá tener los datos de cada proveedor que tenga de ese mismo producto\n\nSi no desea usar los datos de proveedor, puede usar los datos internos solamente.""", None, QtGui.QApplication.UnicodeUTF8))
        label.setStyleSheet("background-color:#FFFFFF;")
        label.setAlignment(QtCore.Qt.AlignLeading|QtCore.Qt.AlignLeft|QtCore.Qt.AlignTop)
        label.setWordWrap(True)
        label.setMargin(6)
        label.setFont(font2)
        self.ui.stack.addWidget(label)


        label = QtGui.QLabel(QtGui.QApplication.translate("Dialog", """Los documentos que genera el sistema se guardan en el folder "Documentos" que se crea en el directorio de instalación del sistema.\n\nPuede cambiar esta ubicación en la seccion de Herramientas.\n""", None, QtGui.QApplication.UnicodeUTF8))
        label.setStyleSheet("background-color:#FFFFFF;")
        label.setAlignment(QtCore.Qt.AlignLeading|QtCore.Qt.AlignLeft|QtCore.Qt.AlignTop)
        label.setWordWrap(True)
        label.setMargin(6)
        label.setFont(font)
        self.ui.stack.addWidget(label)

        self.__currentIndex = 0
        self.ui.stack.setCurrentIndex(self.currentIndex)
        self.ui.laIndex.setText("%s/%s" % (self.currentIndex+1, self.ui.stack.count()))


        label = QtGui.QLabel(QtGui.QApplication.translate("Dialog", "VENTAS\n\n"
"El comprobante de venta puede cambiarse entre Factura y Remisión\n"
"\n"
"Por default, se debe capturar el dato de Pago, puede cambiar este comportamiento en el modulo Herramientas.\n"
"\n"
"\n"
"\n"
"", None, QtGui.QApplication.UnicodeUTF8))
        label.setStyleSheet("background-color:#FFFFFF;")
        label.setAlignment(QtCore.Qt.AlignLeading|QtCore.Qt.AlignLeft|QtCore.Qt.AlignTop)
        label.setWordWrap(True)
        label.setMargin(6)
        label.setFont(font)
        self.ui.stack.addWidget(label)

        label = QtGui.QLabel(QtGui.QApplication.translate("Dialog", "El botón Informacion proporciona tips de acuerdo a la actividad que se esté ejecutando.\n"
"\n"
"Sólo coloque el cursor sobre el botón, no lo presione.", None, QtGui.QApplication.UnicodeUTF8))
        label.setStyleSheet("background-color:#FFFFFF;")
        label.setAlignment(QtCore.Qt.AlignLeading|QtCore.Qt.AlignLeft|QtCore.Qt.AlignTop)
        label.setWordWrap(True)
        label.setMargin(6)
        label.setFont(font)
        self.ui.stack.addWidget(label)

        self.__currentIndex = 0
        self.ui.stack.setCurrentIndex(self.currentIndex)
        self.ui.laIndex.setText("%s/%s" % (self.currentIndex+1, self.ui.stack.count()))

        label = QtGui.QLabel(QtGui.QApplication.translate("Dialog", "Los botones se mostrarán deshabilitados cuando la acción que ejecutan no puede efectuarse porque los datos no están completos o están incorrectos.\n", None, QtGui.QApplication.UnicodeUTF8))
        label.setStyleSheet("background-color:#FFFFFF;")
        label.setAlignment(QtCore.Qt.AlignLeading|QtCore.Qt.AlignLeft|QtCore.Qt.AlignTop)
        label.setWordWrap(True)
        label.setMargin(6)
        label.setFont(font)
        self.ui.stack.addWidget(label)

        self.__currentIndex = 0
        self.ui.stack.setCurrentIndex(self.currentIndex)
        self.ui.laIndex.setText("%s/%s" % (self.currentIndex+1, self.ui.stack.count()))


    def closeEvent(self, event):
        self.app.config.push('layout', 'tipsWindowState', self.saveGeometry().toBase64())


    def salir(self):
        self.close()


    def anterior(self):
        if self.currentIndex > 0:
            self.__currentIndex -= 1
        else:
            self.__currentIndex = self.ui.stack.count() - 1
        self.ui.stack.setCurrentIndex(self.currentIndex)
        self.ui.laIndex.setText("%s/%s" % (self.currentIndex+1, self.ui.stack.count()))


    def siguiente(self):
        if self.currentIndex+2 > self.ui.stack.count():
            self.__currentIndex = 0
        else:
            self.__currentIndex += 1
        self.ui.stack.setCurrentIndex(self.currentIndex)
        self.ui.laIndex.setText("%s/%s" % (self.currentIndex+1, self.ui.stack.count()))


    def toggleMostrarTips(self, state):
        print "herramientas.Forma.toggleMostrarTips()", state
        print state, QtCore.Qt.Checked
        if state == QtCore.Qt.Checked:
            valor = u"1"
        else:
            valor = u"0"
        man.atributoI(grupo=u'sistema', nombre=u'mostrarTips', valor=valor)
        self.emit(QtCore.SIGNAL('mostrarTipsChanged()'))

